package generator.datastructure.j2xml_impl;

import generator.datastructure.MethodDeclaration;
import generator.workflow.sfj.gridgain.GridJob;

import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;

import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

/**Esta clase representa una sentencia o un punto de bufurcación que ha sido modifcado
 * de modo de utilizar los servicios del middleware GridGain que permiten convertir un 
 * llamado recusivo en un trabajo y enviar a este a ejecutar en el grid.
 * ForkPointGridified emplea la biblioteca javaToXml para representar la sentencia antes
 * descripta.
 * @author Hirsch-Fernández*/
public class ForkPointGridified extends ForkPointJ2XML {
	
	/**Constructor de la clase*/
	public ForkPointGridified(Element forkSentence, MethodDeclaration md) {
		super(forkSentence,md);
	}

	/**{@inheritDoc}*/
	protected NodeList getInvocationParams(){
		try {
			return (NodeList)xpath.evaluate("self::*//"+jm.NEW+"["+jm.TYPE+"[@name='"+GridJob.getGJName(this.getMethodOwner())+"']]/"+jm.ARGUMENTS+"/*", this.forkElement,XPathConstants.NODESET);
		} catch (XPathExpressionException e) {
			e.printStackTrace();
			return null;
		}
	} 

}
